home *** CD-ROM | disk | FTP | other *** search
/ Informática Multimedia 1995 April / Informatica Multimedia CD - Epimundo.iso / DOS / ARCHIVE / ST_EXP.ZIP / ST-EXP.DOC < prev    next >
Encoding:
Text File  |  1989-04-13  |  16.3 KB  |  341 lines

  1.                                                         October 25, 1988
  2.  
  3.  
  4.      New Files in this group:
  5.  
  6.           ST.EXE     v1.05    December 29, 1988  (minor fixes)
  7.           EXP.EXE    v1.01    December 28, 1988  (minor fixes)
  8.  
  9.  
  10. Introduction (and a little rattling of the cup...)
  11. --------------------------------------------------
  12.      ST/EXP represents a new level of performance for text data
  13. compression, typically compressing text files to about 30% of their
  14. original size.  However, high throughput is not sacrificed in the
  15. process; it is competitive in speed with the best programs based upon
  16. the vastly simpler Limpel-Ziv algorithm.
  17.  
  18.      I believe it recognizes a point seemingly passed over in all the
  19. other attempts at text data compression that I know of.  Namely, that
  20. the pursuit of ever higher storage capacities without, at the same time,
  21. addressing more convenient information ACCESS, is ultimately a pursuit
  22. that will end in chaos.  The word-orientation of ST/EXP's compression
  23. technique provides the "hooks" to address exactly this issue of
  24. convenient information access.
  25.  
  26.      If you find these programs useful, a contribution of $25 will be
  27. greatly appreciated.  For $50, you will be registered and will receive
  28. the next program update, with manual, at no additional cost.  Quantity
  29. discounts and site licensing can be worked out for anyone that gets
  30. really serious about it.
  31.  
  32.      ST/EXP was definitely NOT a hobbyist effort.  I'm trying to do this
  33. for a living.  With your support, Bartles and James has been able to
  34. bring you an ever-expanding array of different-flavored wine coolers.
  35. Also with your support, I will be able to continue to develop this basic
  36. technology into something that will be even more useful and interesting,
  37. which will ultimately save YOU money!  You can send your INVESTMENT to:
  38.  
  39.                           MicroComputer Square
  40.                           126 Hancock Avenue
  41.                           Spartanburg, SC  29302
  42.  
  43. and THANKS!!!
  44.  
  45.  
  46. Now the Manual
  47.  
  48. The following programs and files are included:
  49.  
  50. ST.EXE        -- the FlySpeed compression program
  51. EXP.EXE       --  "     "     expansion program
  52. FLYSPEED.MC2  -- FlySpeed's dictionary data file
  53.  
  54. ST/EXP will tell you that you need to specify a file-specification, if
  55. you simply type their program name, followed by return.
  56.  
  57.  
  58. ST/EXP
  59.  
  60.      ST/EXP (es-tee-e-x-p) is really a pair of programs:  ST.EXE, which
  61. compresses text files (we had to call it something, so we called it
  62. "stomp", or "st" for short), and EXP.EXE (short for "expand"), which
  63. re-expands the compressed file to an identical copy of the original.  By
  64. "text", we mean the normal output of word-processing programs,
  65. preferably saved in a standard ASCII format (as is usually done for
  66. telecommunications use).  Eventually, the program should be able to
  67. reliably compress database files as well (and maybe spreadsheet files a
  68. little later), but for now we intend to concern ourselves with
  69. compression of written language, which is actually a more difficult
  70. problem that really has not been adequately addressed, until now.
  71.  
  72.  
  73. How It Works
  74.  
  75.      Well, we can't entirely say, since some aspects of the program's
  76. operation constitute patentable processes, and the patent application
  77. hasn't been filed yet.  Beyond that, the program simply doesn't work by
  78. any one simple "trick" or "scheme"; it is actually a collection of
  79. algorithms, some novel and wretchedly complex, with an efficient means
  80. of determining the best algorithm to use for the data immediately being
  81. examined.  For example, the well-known (in computing circles)
  82. run-length-limited representation is used to optimally represent
  83. situations in which a particular character is repeated a number of
  84. times, such as a long sequence of spaces.  We expect that the program
  85. will eventually be able to compress database files quite well, since
  86. spaces or "null characters" are often employed as fill characters for
  87. "empty fields" in database files, and these sequences can be compressed
  88. to just about nothing using a run-length representation.  Compression of
  89. true text data, which is to say written language in a digital form, is
  90. not so easily accomplished, unfortunately.
  91.  
  92.      (Those of you who are particularly interested in compression of
  93. database and spreadsheet files should make your interests known to us.
  94. We would especially appreciate any actual dBase II and Lotus files you
  95. care to send us, since lack of actual data to use for tests is one of
  96. the most serious impediments to the development and refinement of that
  97. capability.)
  98.  
  99.      We have described Fly Coding as an "optimal representation of lan-
  100. guage", implicitly meaning "an optimal digital representation of
  101. written language", including punctuation, etc.  The use of the word
  102. "optimal" naturally begs the question, "Optimal in what sense?", or
  103. "What parameter or parameters are being optimized?"
  104.  
  105.  
  106. A Real-Quick Tutorial on Digital Data Storage
  107.  
  108.      Computer people like to talk in terms of bits and bytes.  A BIT is
  109. a Binary digIT, which can be either a 0 or a 1, easily represented
  110. electronically as a low (less than 1 Volt) or high (more than 3 Volts)
  111. voltage.  Since a bit is so little (it takes about 10 to make the
  112. equivalent of 3 normal, base-10 digits), a byte (which is 8 bits) is
  113. generally more convenient to talk about.
  114.  
  115.      A byte can represent 2-to-the-power-of-8, or 256, different values,
  116. and may thus be thought of as a digit, base-256, or by "hexadecimal"
  117. notation: two digits, base-16.
  118.  
  119.      If, say, the Declaration of Independence, stored as a normal text
  120. file, contained 10,000 bytes, then, in effect, we are using a 10,000
  121. digit number, base-256, to represent the information contained in the
  122. Declaration of Independence (a number vastly larger than the number of
  123. subatomic particles in the universe).  This would be exactly equivalent
  124. to 20,000 digits, base-16, and approximately 24,000 digits, base-10
  125. (since "5 digits", 100,000 base-16, is 1,048,576 or about "6 digits",
  126. base-10).
  127.  
  128.      What we would like to do is to find a number with significantly
  129. fewer digits which can represent the same information, thereby reducing
  130. the space required to store the number, whether we are storing it on a
  131. piece of paper, or a magnetic or optical disk (and also reducing the
  132. time it will take to transmit the number by modem).  If we can reduce
  133. the number of digits needed by a factor of 4, then, in effect, we are
  134. transforming the number into a second number which is approximately the
  135. fourth root of the first (we must, of course, be able to transform the
  136. second number identically back into the first).
  137.  
  138.      We would like to say that, in producing an "optimal representation
  139. of language", we have found a way of finding the minimum number which
  140. can represent a given document.  We think we can make this statement,
  141. with the qualification that the technique should not resort to
  142. natural-language comprehension in order to perform the compression.
  143.  
  144.      This qualification hints at the other parameters which are of
  145. concern: namely, the speed at which the process operates, as well as its
  146. memory requirements, reliability, and certainly the feasibility of
  147. accomplishing the desired goal before starvation set in.  In other
  148. words, what is being optimized is the USEFULNESS of the technique, which
  149. is a more subtle issue than just optimizing the compression factor.
  150. Nonetheless, we feel that we were able to avoid all, but a few minor
  151. compromises between high compression factor and high throughput.
  152.  
  153.  
  154. But How Does It Work?
  155.  
  156.      In order to discuss "how it works" adequately, some discussion of
  157. "what information is", from an epistemological perspective, is in order.
  158. But since we've probably already lost some of you, we'd really rather
  159. not go into that...
  160.  
  161.      However, an explanation that we think will satisfy a lot of people,
  162. and which really does explain much of how the program works, is simply
  163. this:
  164.  
  165.      The program uses a "dictionary", contained in the file
  166. "flyspeed.mc2", to convert words found in a document to numbers, which
  167. take up less room than the original word, as represented according to
  168. the standard convention.
  169.  
  170.      The dictionary, itself, employs data-compression techniques, as do
  171. the dictionaries used in spelling checkers that come with most
  172. word-processing packages.  The difference is that, while the
  173. data-compression techniques employed in common spelling checkers are
  174. oriented toward anachronistic concerns over saving memory, the
  175. data-compression techniques employed in FlySpeed's dictionary are geared
  176. toward high-speed lookup.  It is for this reason that FlySpeed's
  177. "tokenizing engine" runs from 19 (Wordperfect) to 115 (Borland's Turbo
  178. Lightning) times faster than typical spelling checkers on the market.
  179.  
  180.      A writer of an ad which appeared recently in a major
  181. personal-computing publication, for a board which compresses database
  182. files, had "cutesie" compression programs mashing, mangling, and
  183. otherwise doing terrible things to data.  (We're not sure what's so
  184. different about having the microprocessor on your computer's
  185. motherboard do the compression, from having a microprocessor on a
  186. plug-in board, if you have any plug-in slots left... do it.)  It fairly
  187. well pointed up the fact that most people haven't got a clue as to what
  188. data-compression really means.
  189.  
  190.      In a nutshell, data-compression simply means finding a more
  191. efficient representation of data than the representation commonly in
  192. use, and being able to translate back and forth between the two.  There
  193. is usually nothing which intrinsically recommends "the representation
  194. commonly in use", other than simplicity and expediency.  We feel that,
  195. given the power and sophistication of modern microcomputers,
  196. simplicity and expediency no longer constitute sufficient justification
  197. for the use of ASCII (American Standard Code for Information
  198. Interchange), at least not for the purposes of information storage and
  199. communication.  Furthermore, as businesses are beginning to build up
  200. megabytes of records and documents on their computers, there is a need
  201. not only to address efficient information storage and communication, but
  202. efficient information retrieval, as well.
  203.  
  204.  
  205. Running ST/EXP
  206.  
  207.      ST and EXP must be run from the directory in which they are
  208. located (you can't simply put them in some directory named in a "path
  209. command", and then run them from whatever directory you happen to be
  210. in).
  211.  
  212.      We could eliminate this restriction, and we'll do so if people
  213. scream for it, but the programs load somewhat faster when DOS doesn't
  214. have to look very far for them.  For short documents, the time it takes
  215. DOS simply to load ST/EXP, can be a significant portion of the program's
  216. "run time".
  217.  
  218.      Besides, you'll compress files after you've finished creating them,
  219. at which time you'll probably be in your word-processing directory, so
  220. your word-processing directory is the logical place to put ST/EXP.
  221.  
  222. In order to compress a file, simply type:
  223.  
  224.         ST filename
  225.  
  226. More generally, you can type:
  227.  
  228.         ST filespec1 ... filespecN
  229.  
  230. in order to compress all files having those file-specifications.  For
  231. example, you would type:
  232.  
  233.         ST \mary\*.DOC john\*.TXT gossip?.*
  234.  
  235. in order to compress all files in the directory "mary", having the
  236. extension "DOC"; all files in the subdirectory "john", of the current
  237. directory, having the extension "txt", as well as all files in the
  238. current directory with any extension, and whose first six characters are
  239. "gossip".
  240.  
  241.      Expansion works in a similar fashion; however, exp always looks
  242. for files having a "prs" extension (which is the extension assigned by
  243. st to its compressed output file).  Thus, in order to expand the files
  244. above, you would type:
  245.  
  246.         exp \mary\* john\* gossip?
  247.  
  248.  
  249. A Nasty Footnote about Microsoft Word
  250.  
  251.      We hope this isn't going to get to be a regular thing with
  252. Microsoft Word, but we need to add a footnote...
  253.  
  254.      If you get out your calculator and divide the file-size of your
  255. Word documents by 512, you'll always end up with an integer.  This is
  256. not due to some great coincidence of the Cosmos.  Since the sector size
  257. used by IBM PCs is 512 bytes, they may have decided that it doesn't
  258. "hurt anything" to do this.  Even if you plan to transmit the document
  259. by modem, with a 1200 baud modem, it would take only about an extra 4
  260. seconds to transmit the maximum 511 bytes of unnecessary junk left at
  261. the end of the file.
  262.  
  263.      However, since ST/EXP is not at liberty to decide what in a file is
  264. and is not important, when it encounters this junk, it must faithfully
  265. deal with it.  This can have a disproportionate impact in the
  266. compression one may achieve with Microsoft Word files, particularly for
  267. files with perhaps only 1000 words, and 511 bytes of junk at the end.
  268.  
  269.      One solution is to store your Word documents on disk in the
  270. standard ASCII format, by setting the printer to "plain", and printing
  271. to a file as described in the Word manual.  You may need to do this
  272. anyway, if you are sending electronic mail to someone who doesn't have
  273. Microsoft Word.  However, Word is not especially fast at saving docu-
  274. ments in text form.
  275.  
  276.      The best solution, which is out of your hands as well as ours, is
  277. for Microsoft to set the file-size to its real value, or, at least, set
  278. all the junk to spaces or nulls.
  279.  
  280.      Where all this junk comes from, this writer isn't entirely certain.
  281. I noticed once, that one Word file I'd just written had junk from a
  282. previous file I'd been working on, which suggests that the junk is
  283. simply whatever happened to be in some particular section of memory when
  284. the file was saved.
  285.  
  286.      So, if you're using Microsoft Word to write some electronic mail
  287. to someone you and a co-conspirator are planning to murder, and you're
  288. also writing to your co-conspirator, write your letter to your
  289. co-conspirator AFTER you write the letter to your intended victim.
  290.  
  291.      Conversely, if you suspect that someone is conspiring to murder
  292. you, and you get some electronic mail from them written with Word, type
  293. the file to the screen to display any junk which might be at the end.
  294. It may just contain a fragment of some mail written previously to their
  295. co-conspirator, which may give their plan away, and provide evidence for
  296. the authorities.
  297.  
  298.      In addition to this junk at the end of a Word file, there is also
  299. a 128-byte header at the beginning of Word files, which appears to
  300. contain useful information (at least useful to Word itself), such as
  301. what the righthand margin setting for the file is.  Of course, having
  302. to deal with this non-language information also can hurt the compression
  303. attainable with Microsoft Word, though it doesn't cause that much of a
  304. problem for longer files.
  305.  
  306.  
  307.          ----------------end-of-author's-documentation---------------
  308.  
  309.                         Software Library Information:
  310.  
  311.                    This disk copy provided as a service of
  312.  
  313.                         The Public (Software) Library
  314.  
  315.          We are not the authors of this program, nor are we associated
  316.          with the author in any way other than as a distributor of the
  317.          program in accordance with the author's terms of distribution.
  318.  
  319.          Please direct shareware payments and specific questions about
  320.          this program to the author of the program, whose name appears
  321.          elsewhere in  this documentation. If you have trouble getting
  322.          in touch with the author,  we will do whatever we can to help
  323.          you with your questions. All programs have been tested and do
  324.          run.  To report problems,  please use the form that is in the
  325.          file PROBLEM.DOC on many of our disks or in other written for-
  326.          mat with screen printouts, if possible.  The P(s)L cannot de-
  327.          bug programs over the telephone.
  328.  
  329.          Disks in the P(s)L are updated monthly, so if you did not get
  330.          this disk  directly from the P(s)L,  you should be aware that
  331.          the files in this set may no  longer be the current versions.
  332.  
  333.          For a copy of the latest monthly software library newsletter
  334.          and a list of the 1,800+ disks in the library, call or write
  335.  
  336.                         The Public (Software) Library
  337.                               P.O.Box 35705 - F
  338.                            Houston, TX 77235-5705
  339.                                (713) 665-7017
  340.  
  341.